package com.ljd.blog.util;

import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

/**
 * 文件上传工具类
 */
public class FileUpload {
    /**
     * @param file     多媒体文件
     * @param filePath 文件上传到的目的路径
     * @param fileName 文件名称（不包括扩展名，即后缀）
     * @return
     */
    public static String fileUpload(MultipartFile file, String filePath, String fileName) throws IOException {
        //扩展名
        String exeName = "";

        if (file.getOriginalFilename().lastIndexOf(".") >= 0) {
            exeName = file.getOriginalFilename().
                    substring(file.getOriginalFilename().lastIndexOf("."));
        }
        copyFile(file.getInputStream(), filePath, fileName + exeName);


        return fileName + exeName;
    }

    /**
     * @param inputStream 文件流
     * @param dir         目的文件夹
     * @param realName    文件全名
     * @return
     * @throws IOException
     */
    private static File copyFile(InputStream inputStream, String dir, String realName) throws IOException {

        File destFile = new File(dir, realName);
        return copyFile(inputStream, destFile);
    }

    private static File copyFile(InputStream inputStream, File destFile) throws IOException {
        if (null == inputStream) {
            return null;
        }
        if (!destFile.exists()) {
            if (!destFile.getParentFile().exists()) {
                destFile.getParentFile().mkdir();
            }
            destFile.createNewFile();
        }
        FileUtils.copyInputStreamToFile(inputStream, destFile);
        return destFile;
    }
}
